<?php
// Service web du projet Réservations M2L
// Ecrit le 18/9/2014 par Jim

// Ce service web permet à un administrateur authentifié d'enregistrer un nouvel utilisateur
// et fournit un compte-rendu d'exécution

// Le service web doit être appelé avec 5 paramètres : nomAdmin, mdpAdmin, name, level, email
// Les paramètres peuvent être passés par la méthode GET (pratique pour les tests, mais à éviter en exploitation) :
//     http://<hébergeur>/CreerUtilisateur.php?nomAdmin=admin&mdpAdmin=admin&name=jim&level=1&email=jean.michel.cartron@gmail.com
// Les paramètres peuvent être passés par la méthode POST (à privilégier en exploitation pour la confidentialité des données) :
//     http://<hébergeur>/CreerUtilisateur.php

// déclaration des variables globales pour pouvoir les utiliser aussi dans les fonctions
global $doc;		// le document XML à générer
global $nomUser, $mdpNouveau;
global $ADR_MAIL_EMETTEUR;

// inclusion des paramètres et de la bibliothèque de fonctions ("include_once" peut être remplacé par "require_once")
include_once ('_inc_parametres.php');
include_once ('_inc_fonctions_boite_a_outils.php');

// crée une instance de DOMdocument
$doc = new DOMDocument();

// specifie la version et le type d'encodage
$doc->version = '1.0';
$doc->encoding = 'ISO-8859-1';

// crée un commentaire et l'encode en ISO
$elt_commentaire = $doc->createComment('Service web CreerUtilisateur - BTS SIO - Lycée De La Salle - Rennes');
// place ce commentaire à la racine du document XML
$doc->appendChild($elt_commentaire);

// Récupération des données transmises
// la fonction $_GET récupère une donnée passée en paramètre dans l'URL par la méthode GET
if ( empty ($_GET ["nomUser"]) == true)  $nomUser = "";  else   $nomUser = $_GET ["nomUser"];

// si l'URL ne contient pas les données, on regarde si elles ont été envoyées par la méthode POST
// la fonction $_POST récupère une donnée envoyées par la méthode POST
if ( $nomUser == "")
{	if ( empty ($_POST ["nomUser"]) == true)  $nomAdmin = "";  else   $nomAdmin = $_POST ["nomUser"];
}

// Contrôle de la présence des paramètres
if ( $nomUser == "" )
{	TraitementAnormal ("Erreur : données incomplètes.");
}
else
{
	// connexion du serveur web à la base MySQL ("include_once" peut être remplacé par "require_once")
	include_once ('_inc_connexion.php');
	include_once ('_inc_fonctions_bdd_reservations.php');

	if ( existeUtilisateur($nomUser) == false )
		TraitementAnormal("Erreur : nom d'utilisateur inexistant.");
	else
	{
		$mdpNouveau=creerMdp();	
		modifierMdpUser($nomUser, $mdpNouveau);
		TraitementNormal();
	}
	// ferme la connexion à MySQL :
	mysql_close ($cnx);
}
// Mise en forme finale
$doc->formatOutput = true;
// renvoie le contenu XML
echo $doc->saveXML();
// fin du programme
exit;


// fonction de traitement des cas anormaux
function TraitementAnormal($msg)
{	// redéclaration des données globales utilisées dans la fonction
global $doc;
// crée l'élément 'data' à la racine du document XML
$elt_data = $doc->createElement('data');
$doc->appendChild($elt_data);
// place l'élément 'reponse' juste après l'élément 'data'
$elt_reponse = $doc->createElement('reponse', $msg);
$elt_data->appendChild($elt_reponse);
return;
}


// fonction de traitement des cas normaux
function TraitementNormal()
{	// redéclaration des données globales utilisées dans la fonction
global $doc;
global $nomUser, $mdpNouveau;
global $ADR_MAIL_EMETTEUR;

$email=emailUtilisateur($nomUser);
// envoie un mail de confirmation de l'enregistrement
$sujet = "Changement de votre mot de passe dans le système de réservation de M2L";
$message = "Nous vous confirmons la bonne modification de votre mot de passe.\n\n";
$message .= "Les données enregistrées sont :\n\n";
$message .= "Votre nom : " . $nomUser . "\n";
$message .= "Votre nouveau mot de passe : " . $mdpNouveau ;

$ok = envoyerMail ($email, $sujet, $message, $ADR_MAIL_EMETTEUR);
if ( $ok )
	$msg = "Vous allez recevoir un mail avec votre nouveau mot de passe.";
else
	$msg = "L'envoi du mail à l'utilisateur a rencontré un problème.";

// crée l'élément 'data' à la racine du document XML
$elt_data = $doc->createElement('data');
$doc->appendChild($elt_data);
// place l'élément 'reponse' juste après l'élément 'data'
$elt_reponse = $doc->createElement('reponse', $msg);
$elt_data->appendChild($elt_reponse);
return;
}
?>